package com.example.spring.bean.load05condition;

import com.example.spring.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/**
 * 选择性的注入bean
 * <p> 当引入 @Conditional 时, 容器可以选择性的注册bean。
 * <p> 相当于一个简单的过滤器了
 * <p> 可以用在 @Bean , 也可以用作 @Configuration 上
 */
@Configuration
class InitConfig {

    /**
     * 默认注入
     */
    @Bean
    User user() {
        return new User(31, "initU");
    }

    /**
     * 如果操作系统是Linux，则注入root
     * 如果操作系统是windows，则注入admin
     *
     * @return
     */
    @Bean
    @Conditional(value = LinuxCondition.class)
    User root() {
        return new User(1001, "root");
    }

    @Bean
    @Conditional(value = WindowCondition.class)
    User admin() {
        return new User(1, "admin");
    }

}
